﻿//Verifica si el DC de una cuenta Bancaria Nacional coincide con
//el resto de la cuenta. Devuelve true, si es así y false, si no.
function digito_control_correcto(entidad, oficina, dc, numero)
{
    var suma = 0;
    //para calcular el primer dígito de control
    var primer_dc = 0;
    //para calcular el segundo dígito de control
    var segundo_dc = 0;
    
    //Si el usuario ha cumplimentado los campos del formulario
    //realizamos la comprobación del DC
    if (((entidad != "") && (oficina != "") && (dc != "") && (numero != "")) &&
        ((entidad.length == 4) && (oficina.length == 4) && (dc.length == 2) && (numero.length == 10))){
        
        //CALCULAMOS EL VALOR PARA EL PRIMER DÍGITO DE CONTROL (el valor de la izquierda)
        //SIRVE PARA VERIFICAR LA ENTIDAD Y LA OFICINA
        //sumamos los valores para la entidad
        suma = suma + (entidad[0] * 4);
        suma = suma + (entidad[1] * 8);
        suma = suma + (entidad[2] * 5);
        suma = suma + (entidad[3] * 10);
        //sumamos los valores para la oficina
        suma = suma + (oficina[0] * 9);
        suma = suma + (oficina[1] * 7);
        suma = suma + (oficina[2] * 3);
        suma = suma + (oficina[3] * 6);
        
        if ((suma % 11) == 0) segundo_dc = 0;
        else if ((primer_dc = Math.abs(11 - (suma % 11))) == 10) primer_dc = 1;
           
        //CALCULAMOS EL VALOR PARA EL SEGUNDO DÍGITO DE CONTROL (el valor de la derecha)
        //SIRVE PARA VERIFICAR EL NÚMERO DE CUENTA
        //sumamos los valores para la entidad
        suma = 0
        suma = suma + (numero[0] * 1)
        suma = suma + (numero[1] * 2)
        suma = suma + (numero[2] * 4)
        suma = suma + (numero[3] * 8)
        suma = suma + (numero[4] * 5)
        suma = suma + (numero[5] * 10)
        suma = suma + (numero[6] * 9)
        suma = suma + (numero[7] * 7)
        suma = suma + (numero[8] * 3)
        suma = suma + (numero[9] * 6)        
            
        if ((suma % 11) == 0) segundo_dc = 0;
        else if ((segundo_dc = Math.abs(11 - (suma % 11))) == 10) segundo_dc = 1;
        
        return ((primer_dc == dc[0]) && (segundo_dc == dc[1]))
       
    }
    //si no hay datos con los que calcular el DC    
    else {
        return false
    } //if-else
} // comprobar_DC()

//--------------------------------------------------------------------------------------------

